package com.demo.mapper;


import com.demo.bean.FixedEvent;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 李天航
 * 活动安排的结果
 */
@Repository
public interface ResultMapper {
    /**
     * 添加一项安排好的活动
     * @param fixedEvent 固定活动
     */
    void addResult(FixedEvent fixedEvent);

    /**
     * 删除一项安排好的活动
     * @param eventId 需要删除的结果编号
     */
    void deleteResult(Integer eventId);

    /**
     * 更新一项安排好的活动
     * @param fixedEvent 时间固定的活动
     */
    void updateResult(FixedEvent fixedEvent);

    /**
     * 通过id查找一个时间固定的活动
     * @param eventId 安排好的活动id
     * @return 活动信息
     */
    FixedEvent getResultById(Integer eventId);

    /**
     * 查找用户自己的活动
     * @param fixedEvent 用户账号和周数
     * @return 日程列表
     */
    List<FixedEvent> getResultsByUserAccountAndWeekNum(FixedEvent fixedEvent);

    /**
     * 清空指定用户指定周数的安排表
     * @param fixedEvent 用户账号和周数
     */
    void clearResultsByUserAccountAndWeekNum(FixedEvent fixedEvent);

    /**
     * 根据任务编号删除一项转换而来的固定活动
     * @param taskId 任务编号
     */
    void deleteFixedEventByTaskId(Integer taskId);

    /**
     * 通过任务编号完成一项安排
     * @param resultId 日程id
     */
    void finishFixedEventByResultId(Integer resultId);

    /**
     * 通过任务编号取消一项打卡
     * @param resultId 任务编号
     */
    void unfinishFixedEventByResultId(Integer resultId);

    /**
     * 批量添加结果
     * @param results 结果列表
     */
    void addFixedEventByBatch(List<FixedEvent> results);

    /**
     * 第一个起始时间大于time的固定活动
     *
     * @param fixedEvent eventId,beginTime
     * @return 固定活动的信息
     */
    FixedEvent firstLargerBeginTime(FixedEvent fixedEvent);

    /**
     * 第一个终止时间大于time的固定活动
     * @param fixedEvent eventId,beginTime
     * @return 固定活动的信息
     */
    FixedEvent firstLargerEndTime(FixedEvent fixedEvent);

    /**
     * 删除错误数据
     */
    void deleteWrongData();
}
